<template>
<body>
<div id="app">
  <el-container>
    <el-header style="background-color: #0096dc">
      <h1 style="font-size: 22px;color: white">
        萌趣商城后台管理系统
        <span style="float: right">
                    欢迎{{user.nickname}}回来
                    <a href="javascript:void(0)"@click="logout()">退出登录</a>
                </span>
      </h1>
    </el-header>
    <el-container>
      <el-aside width="200px">
        <el-menu @select="handleSelect">
          <el-submenu index="1">
            <template slot="title"><i class="el-icon-s-flag"></i>分类管理</template>
            <el-menu-item index="1-1">分类列表</el-menu-item>
            <el-menu-item index="1-2">添加分类</el-menu-item>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title"><i class="el-icon-picture"></i>轮播图管理</template>
            <el-menu-item index="2-1">轮播图列表</el-menu-item>
            <el-menu-item index="2-2">添加轮播图</el-menu-item>
          </el-submenu>
          <el-submenu index="3">
            <template slot="title"><i class="el-icon-shopping-cart-2"></i>商品管理</template>
            <el-menu-item index="3-1">商品列表</el-menu-item>
            <el-menu-item index="3-2">添加商品</el-menu-item>
          </el-submenu>
        </el-menu>
      </el-aside>
      <el-main>
        <!--分类表格开始-->
        <el-table v-if="currentIndex=='1-1'"
                  :data="categoryArr"
                  style="width: 100%">
          <el-table-column type="index" label="编号"></el-table-column>
          <!--prop=property属性 设置当前列显示的文本内容为对象的xxx属性-->
          <el-table-column prop="name" label="分类名称">
          </el-table-column>
          <el-table-column label="操作">
            <!--scope定义的一个变量名, 里面包含当前行的信息
            scope.$index得到当前行的下标
            scope.row 得到当前行对应数组里面的对象
            -->
            <template slot-scope="scope">
              <el-button
                  size="mini"
                  type="success"
                  @click="categoryUpdate(scope.$index, scope.row)">修改</el-button>
              <el-button
                  size="mini"
                  type="danger"
                  @click="categoryDelete(scope.$index, scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!--分类表格结束-->
        <!--轮播图表格开始-->
        <el-table v-if="currentIndex=='2-1'"
                  :data="bannerArr"
                  style="width: 100%">
          <el-table-column type="index" label="编号"></el-table-column>
          <!--prop=property属性 设置当前列显示的文本内容为对象的xxx属性-->
          <el-table-column label="轮播图" width="300">
            <template slot-scope="scope">
              <img :src="scope.row.url" width="100%">
            </template>
          </el-table-column>
          <el-table-column label="操作">
            <!--scope定义的一个变量名, 里面包含当前行的信息
            scope.$index得到当前行的下标
            scope.row 得到当前行对应数组里面的对象
            -->
            <template slot-scope="scope">
              <el-button
                  size="mini"
                  type="success"
                  @click="bannerUpdate(scope.$index, scope.row)">修改</el-button>
              <el-button
                  size="mini"
                  type="danger"
                  @click="bannerDelete(scope.$index, scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!--轮播图表格结束-->
        <!--商品表格开始-->
        <el-table v-if="currentIndex=='3-1'"
                  :data="productArr"
                  style="width: 100%">
          <el-table-column type="index" label="编号"></el-table-column>
          <el-table-column prop="title" label="商品标题"></el-table-column>
          <el-table-column prop="price" label="商品价格"></el-table-column>
          <el-table-column prop="oldPrice" label="商品原价"></el-table-column>
          <el-table-column prop="saleCount" label="商品销量"></el-table-column>
          <el-table-column prop="num" label="商品库存"></el-table-column>
          <el-table-column prop="viewCount" label="商品浏览量"></el-table-column>
          <el-table-column prop="created" label="发布时间"></el-table-column>
          <!--prop=property属性 设置当前列显示的文本内容为对象的xxx属性-->
          <el-table-column label="商品图片" width="80">
            <template slot-scope="scope">
              <img :src="scope.row.url" width="100%">
            </template>
          </el-table-column>
          <el-table-column label="操作">
            <!--scope定义的一个变量名, 里面包含当前行的信息
            scope.$index得到当前行的下标
            scope.row 得到当前行对应数组里面的对象
            -->
            <template slot-scope="scope">
              <el-button
                  size="mini"
                  type="danger"
                  @click="productDelete(scope.$index, scope.row)">删除</el-button>
              <el-button
                  size="mini"
                  type="danger"
                  @click="productUpdate(scope.$index, scope.row)">修改</el-button>
            </template>
          </el-table-column>
        </el-table>
        <!--商品表格结束-->
      </el-main>
    </el-container>
  </el-container>
</div>
</body>
</template>
<script>
export default {
  name: "Admin",
  data: function () {
    return {
      currentIndex:"1-1",
      categoryArr:[],
      bannerArr:[],
      productArr:[],
      user:{}
    }
  },
  methods:{
    logout(){
      if(confirm("您确认退出登录吗")){}
      axios.get("/logout").then(function(response){
        location.href="/login.html";//返回登录界面
      })
    },
    productUpdate(i,p){
      //跳转到修改商品页面
      location.href="/updateProduct.html?id="+p.id;
    },
    bannerUpdate(i,b){
      //跳转到修改轮播图页面
      location.href="/updateBanner.html?id="+b.id;
    },
    categoryUpdate(i,c){
      let name = prompt("请输入新的分类名称");
      if(name==null){
        return
      }
      if (name.trim()==''){
        v.$message.error("分类名称不能为空!");
        return;
      }
      let category = {id:c.id,name:name}
      //发出修改分类的请求
      axios.post("/category/update",category).then(function (response) {
        //让页面发生改变
        c.name=name;
      })
    },
    categoryDelete(i,c){
      if (confirm("您确认删除此分类吗?")){
        //发出删除分类数据请求
        axios.get("/category/delete?id="+c.id).then(function (response) {
          v.categoryArr.splice(i,1);
          v.$message.success("成功删除"+c.name+"分类!");
        })
      }
    },
    bannerDelete(i,b){
      if (confirm("您确认删除此轮播图吗?")){
        axios.get("/banner/delete?id="+b.id).then(function () {
          v.bannerArr.splice(i,1);
          v.$message.success("删除成功!");
        })
      }
    },
    productDelete(i,p){
      if(confirm("您确认删除此商品吗？")){
        axios.get("/product/delete?id="+p.id).then(function (response){
          v.productArr.splice(i,1);
          v.$message.success("删除成功!");
        })
      }
    },
    handleSelect(key,keyPath){
      //记录当前用户点击的导航菜单的位置
      if (key=='1-2'){
        let name = prompt("请输入分类的名称");
        console.log("name="+name);
        if (name==null){
          return;
        }
        if (name.trim()==''){
          v.$message.error("分类名称不能为空!");
          return;
        }
        //发出添加分类的请求
        axios.get("/category/insert?name="+name).then(function (response) {
          //添加完分类后 把最新的装着所有分类的数组响应回来
          v.categoryArr = response.data;
        })

      }else if(key=='2-2'){
        location.href="insertBanner.html";
      }else if(key=='3-2'){
        location.href="insertProduct.html";
      }else{
        v.currentIndex = key;
      }

    }
  },
  created:function () {
    /*发请求获取当前登录用户对象*/
    axios.get("/currentUser").then(function (response){
      v.user=response.data;
    })
    //发请求获取所有分类的信息
    axios.get("/category/select").then(function (response) {
      v.categoryArr = response.data;
    })
    //发请求获取所有轮播图的信息
    axios.get("/banner/select").then(function (response) {
      v.bannerArr = response.data;
    })
    //发请求获取所有商品信息
    axios.get("/product/selectAdmin").then(function (response){
      v.productArr=response.data;
    })
  }
}
</script>

<style scoped>

</style>